package com.wtwd.campus.wx.service;

import com.alibaba.fastjson.JSONObject;
import org.jeewx.api.core.exception.WexinReqException;
import org.jeewx.api.core.req.model.message.TemplateMessageSendResult;

import java.util.List;
import java.util.Map;

/**
 * @author mjy(此接口推送运用时 ,必须保证模板类容与沃特模板保持一致)
 * @date 2022/09/23
 * @description
 */
public interface WxUtilsService {

    Integer GZH=1;

    Integer XCX=2;

    /**
     * 小程序订阅推送路径
     */
    String XCX_PUSH_SUBSCRIBE_MESSAGE="https://api.weixin.qq.com/cgi-bin/message/subscribe/send?access_token=";

    /**
     * 根据微信code以及密匙获取openId
     *
     * @param code
     * @param AppId
     * @param appSecret
     * @return type 1 微信公众号
     *              2. 小程序
     * @throws Exception
     */
    String getOpenId(String code, String AppId, String appSecret,Integer type) throws Exception;

    /**
     * 获取微信扫码条件
     *
     * @param url
     * @return
     */
    Map<String, Object> getScanCodeCondition(String url, String appId, String appSecret);


    /**
     * 根据客户id创建出围栏模板
     *
     * @param wxCustomerCode
     * @param studentName
     * @param classesName
     * @param fence
     * @param distance
     * @return
     */
    TemplateMessageSendResult createOutFenceTemplate(String wxCustomerCode,String imei,String studentName, String classesName, String fence, double distance);


    /**
     * 根据客户获取id进围栏模板
     *
     * @param wxCustomerCode
     * @param imei
     * @param studentName
     * @param fence
     * @return
     */
    TemplateMessageSendResult createEntryFenceTemplate(String wxCustomerCode, String imei, String studentName, String fence);


    /**
     * 创建咨询模板
     *
     * @param wxCustomerCode
     * @param id
     * @param className
     * @param title
     * @param content
     * @return
     */
    TemplateMessageSendResult createNotificationTemplate(String wxCustomerCode, Integer id, String className, String title, String content);

    /**
     * 创建告警模板
     *
     * @param wxCustomerCode
     * @param stuName
     * @param time
     * @param content
     * @param tip 告警类型
     * @return
     */
    TemplateMessageSendResult createWarningTemplate(String wxCustomerCode,String imei,String stuName, Long time, String content, String tip);

    /**
     * 创建咨询模板
     *
     * @param wxCustomerCode
     * @param id
     * @param type
     * @param title
     * @param content
     * @param schoolName
     * @return
     */
    TemplateMessageSendResult createInformationTemplate(String wxCustomerCode, Integer id, String type, String title, String content, String schoolName);


    /**
     * 创建sos模板
     *
     * @param wxCustomerCode
     * @param obj
     * @return
     */
    TemplateMessageSendResult createSosRecordTemplate(String wxCustomerCode, JSONObject obj);


    /**
     * 根据客户进行推送
     *
     * @param template
     * @return
     */
    boolean pushMsg(String wxCustomerCode, TemplateMessageSendResult template);


    boolean pushMsgXCX(String appId,String appSecret,TemplateMessageSendResult template);


    /**
     * 根据微信appId,appSecret获取认证token
     *
     * @param appId
     * @param appSecret
     * @return
     */
    String getAccessToken(String appId, String appSecret) throws WexinReqException;


    /**
     * 查询设备的归属
     */

    String getWxCustomerCode(List<String> codes, String deviceCode);

    /**
     * 获取微信的鉴权token 以及用户Id
     * @param code
     * @param appId
     * @param appSecret
     * @param customerType 客户类型
     * @return
     */
    Map<String, String> getAccessTokenAndOpenId(String code, String appId, String appSecret, Integer customerType) throws Exception;

    /**
     * 获取用户信息
     * 小程序的用户信息,不通过后台获取
     * @param appId
     * @param appSecret
     * @param customerType
     * @param accessToken
     * @param openId
     * @return
     */
    Map<String, Object> getUserInfo(String appId, String appSecret, Integer customerType, String accessToken, String openId);
}
